home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs04.d81 / dupfind.prg (.txt) < prev    next >
Commodore BASIC  |  2009-10-10  |  3KB  |  121 lines

  1. 10 REM SAVE"@0:DUP FILE FIND",8
  2. 20 PRINT"[147]";:POKE53280,0:POKE53281,0
  3. 30 POKE53280,0:POKE53281,2
  4. 40 DIMD$(500),D1$(500),D(500),E(500)
  5. 50 DN=8
  6. 60 PRINT"[147] DUP ENTRY FIND:"
  7. 70 PRINT" THIS WILL READ THE DIRECTORIES OF TWO"
  8. 80 PRINT" DISKS AND SEARCH FOR DUPLICATE FILES"
  9. 90 PRINT" BETWEEN THE TWO DISKS. THIS IS USEFUL"
  10. 100 PRINT" IF YOU ARE LOOKING FOR FILES TO SCRATCH";
  11. 110 PRINT" TO MAKE MORE ROOM ON YOUR DISKS."
  12. 120 PRINT" FIRST DISK DEVICE (7-30) ? ";:I$="":L=2:GOSUB1130:DN=VAL(I$)
  13. 130 PRINT:PRINT" INSERT FIRST DISK INTO DRIVE 8 <RETURN>"
  14. 140 GETA$:IFA$<>CHR$(13)THEN140
  15. 150 GOSUB800
  16. 160 B1=BF:REM BLOCKS FREE, DISK 1
  17. 170 N1=X+1
  18. 180 FORF=0TON1
  19. 190 D1$(F)=D$(F):E(F)=D(F):D$(F)="":D(F)=0
  20. 200 NEXTF
  21. 210 N1=N1-2
  22. 220 PRINT"[147] SECOND DISK DEVICE (7-30) ? ";:I$="":L=2:GOSUB1130:DN=VAL(I$)
  23. 230 PRINT:PRINT" INSERT SECOND DISK IN DRIVE 8 <RETURN>"
  24. 240 GETA$:IFA$<>CHR$(13)THEN240
  25. 250 GOSUB800
  26. 260 N2=X-1
  27. 270 PR=1:REM DISK
  28. 280 PRINT"[147] OUTPUT TO PRINTER OR DISK OR BOTH       (P/D/B) ?"
  29. 281 PRINT" NOTE: IF DISK IS CHOSEN, THE FILE WILL"
  30. 282 PRINT" BE NAMED "CHR$(34)"DUPLICATES"CHR$(34)", AND WILL BE"
  31. 283 PRINT" WRITTEN TO DEVICE 8."
  32. 290 GETA$:IFA$<>"P"ANDA$<>"D"ANDA$<>"B"THEN290
  33. 300 IFA$="P"THENPR=2
  34. 301 IFA$="B"THENPR=3
  35. 310 IFPR=1THEN340
  36. 320 PRINT"PLEASE TURN THE PRINTER ON <RETURN>"
  37. 330 GETA$:IFA$<>CHR$(13)THEN330
  38. 340 PRINT"[147] LOOKING FOR DUPLICATES:"
  39. 350 PRINT" FIRST DISK  :"N1"FILES."
  40. 360 PRINT" SECOND DISK :"N2"FILES.":PRINT""
  41. 370 FORA1=1TON1
  42. 380 PRINT"[145] WORKING :"A1
  43. 390 FORA2=1TON2
  44. 400 IFD1$(A1)=D$(A2)THENGOSUB500:REM PRINT TO PRINTER/SCREEN
  45. 410 NEXTA2
  46. 420 NEXTA1
  47. 430 PRINT" DONE."
  48. 440 END
  49. 500 REM SEND TO PRINTER/DISK/BOTH
  50. 510 IFPR=1THEN550
  51. 520 OPEN4,4:PRINT#4,D1$(A1);"...";D$(A2):CLOSE4
  52. 530 IFPR=3THEN550
  53. 540 RETURN
  54. 550 REM PRINT TO DISK FILE
  55. 560 OPEN15,8,15
  56. 570 OPEN2,8,2,"DUPLICATES,S,R"
  57. 580 CLOSE2:INPUT#15,A,B$,C,D
  58. 590 IFA<>0THENOPEN2,8,2,"DUPLICATES,S,W":CLOSE2
  59. 600 OPEN2,8,2,"DUPLICATES,S,A"
  60. 610 PRINT#2,D1$(A1);"...";D$(A1)
  61. 620 CLOSE2
  62. 630 INPUT#15,A,B$,C,D
  63. 635 CLOSE15
  64. 640 IFA=0THENRETURN
  65. 650 PRINT"[147] DISK ERROR:"
  66. 660 PRINT"ERROR #";A
  67. 670 PRINT"DESCRIPTION: ";B$
  68. 680 PRINT"TRACK #";C;"  SECTOR #;"D
  69. 690 END
  70. 800 REM DIRECTORY READ
  71. 810 PRINT"[147] READING DIRECTORY:"
  72. 820 X=0:XX=0
  73. 830 OPEN1,DN,0,"$0"
  74. 840 GET#1,A$,B$
  75. 850 GET#1,A$,A$,A$,B$
  76. 860 IF ST<>0 THEN 1060
  77. 870 C=0:P$="":P1$=""
  78. 880 IF A$<>"" THEN C=ASC(A$)
  79. 890 IF B$<>"" THEN C=C+ASC(B$)*256
  80. 900 P$="("+MID$(STR$(C),2)+","
  81. 910 GET#1,B$:IF ST<>0 THEN 1060
  82. 920 IF B$<>CHR$(34) THEN 910
  83. 930 GET#1,B$:IFB$<>CHR$(34)THENP1$=P1$+B$:GOTO930
  84. 940 GET#1,B$:IFB$=CHR$(32)THEN940
  85. 950 C$=""
  86. 960 C$=C$+B$:GET#1,B$:IF B$<>""  THEN 960
  87. 970 L=3:IFLEFT$(C$,1)="*"THENL=4
  88. 980 P$=P$+LEFT$(C$,L)+")"
  89. 990 PD$=LEFT$(C$,L)
  90. 1000 IFX=0THEND$(D)=P1$:GOTO1020
  91. 1010 D$(X)=P1$:D(X)=VAL(MID$(P$,2,3))
  92. 1020 PRINT"[158]";D(X):PRINT"[145][144]";D$(X)
  93. 1030 X=X+1:IFX>144THEN1070
  94. 1040 IFXX=0THEN850
  95. 1050 IFXX=1THEN1090
  96. 1060 A=LEN(P$):BF=VAL(MID$(P$,2)):P$=LEFT$(P$,A-1)+")"
  97. 1070 D$(X)="BLOCKS FREE="+P$
  98. 1080 PRINT"[158]";D(X):PRINT"[145][144]";D$(X)
  99. 1090 CLOSE1
  100. 1100 IFX=1THENCD$="":RETURN
  101. 1110 CF=0:FI=X:D$(0)=""+D$(0)+"[146]"
  102. 1120 RETURN
  103. 1130 REM INPUT ROUTINE
  104. 1140 CL=LEN(I$)
  105. 1150 B$="":FORF=1TOL:PRINT"-";:B$=B$+"[157]":NEXTF:PRINTB$;I$;
  106. 1160 IFCL<>LTHENPOKE204,0
  107. 1170 GET A$:IFA$=""THEN1170
  108. 1180 POKE204,1:IFCL<>LTHENPRINT"-[157]";
  109. 1190 A=ASC(A$):IFA=34THENPRINTCHR$(34);:POKE212,0:GOTO1250
  110. 1200 IFA=20THEN1270
  111. 1210 IFA=13THENRETURN
  112. 1220 IFA<32ORA>90THEN1160
  113. 1230 IFCL>=LTHEN1160
  114. 1240 PRINTA$;
  115. 1250 I$=I$+A$:CL=LEN(I$)
  116. 1260 GOTO1160
  117. 1270 IFCL=0THEN1160
  118. 1280 I$=LEFT$(I$,CL-1)
  119. 1290 CL=LEN(I$):PRINT"[157]-[157]";
  120. 1300 GOTO1160
  121.